package br.ufpr.monografia.venda.client;

import java.util.Calendar;
import java.util.Date;

import br.ufpr.monografia.estoque.entity.Estoque;
import br.ufpr.monografia.estoque.service.EstoqueService;
import br.ufpr.monografia.estoque.service.exception.EstoqueException;
import br.ufpr.monografia.tarifacao.entity.Preco;
import br.ufpr.monografia.tarifacao.entity.Produto;
import br.ufpr.monografia.tarifacao.service.TarifacaoService;
import br.ufpr.monografia.tarifacao.service.exception.TarifacaoException;

public class CompradorClient {
	
	public CompradorClient(String nomeProduto, Date dataEntrada, String loteProduto, int quantidadeComprada, 
			Date dataInicioVigencia, Date dataFimVigencia, double precoHoje) {
		
		this.nomeProduto = nomeProduto;
		this.dataEntrada = dataEntrada;
		this.loteProduto = loteProduto;
		this.quantidadeComprada = quantidadeComprada;
		this.dataInicioVigencia = dataInicioVigencia;
		this.dataFimVigencia = dataFimVigencia;
		this.precoHoje = precoHoje;
		
	}
	
	String nomeProduto;
	Date dataEntrada;
	String loteProduto;
	int quantidadeComprada;
	Date dataInicioVigencia;
	Date dataFimVigencia;
	double precoHoje;
	
	public void comprar() throws TarifacaoException, EstoqueException, Exception {
		

		EstoqueService es;
		TarifacaoService ts;
		Estoque estoque;
		Produto produto = null;
		
		es = new EstoqueService();
		ts = new TarifacaoService();
		
		produto = ts.consultaProdutoPorNome(nomeProduto);
		
		if (produto == null) {
			produto = criarProduto();
		}else {
			produto = ts.alteraPreco(produto, dataInicioVigencia, dataFimVigencia, precoHoje);
		}
		
		estoque = new Estoque();
		estoque.setDataEntrada(dataEntrada);
		estoque.setLoteProduto(loteProduto);
		estoque.setProduto(produto);
		estoque.setQuantidadeComprada(quantidadeComprada);
		
		es = new EstoqueService();
		es.entraProduto(estoque);
		
	}

	private Produto criarProduto() throws TarifacaoException, Exception {
		
		Produto p = new Produto();
		p.setNome(nomeProduto);
		
		Preco pr = new Preco();
		pr.setFimVigencia(dataFimVigencia);
		pr.setInicioVigencia(dataInicioVigencia);
		pr.setValor(precoHoje);
		
		p.setPreco(pr);
		
		TarifacaoService ts = new TarifacaoService();
		ts.cadastraProduto(p);
		
		return p;
		
	}
	
	
	
	
	

}
